package com.kfm.ex;

public class Person {

    private String name;
    private String gender;
    // age 取值范围  0-140
    private int age;

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                '}';
    }

    // 直接继承 Exception -- 就属于编译时异常
    // 直接继承 RuntimeException -- 属于运行时异常
    public void setAge(int age) throws AgeIllegalException {
        if (age > 140 || age < 0) { // 说明年龄不合法 Null
            // throw new Exception("年龄不合法");
            throw new AgeIllegalException("年龄不合法，正常年龄范围是0-140岁");
        }
        this.age = age;
    }
}

class PersonTest {
    public static void main(String[] args) {
        Person person = new Person();
        try {
            person.setAge(-20);
            System.out.println(person);
        } catch (AgeIllegalException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
        // Throwable
        // Error Exception -- RuntimeException（运行时异常，不强制要求处理）  和其他（编译时异常，需要处理程序才能编译成功）
        // try catch finally throw throws
        // try - catch try {可能产生异常的代码} catch(可能产生的异常) {}
        // try - finally try {可能产生异常的代码} finally {}
        // try - catch -finally
        // throws 抛出异常 让调用者处理
        // throw 主动产生一个异常 异常对象 要不要处理 取决于异常对象属于运行时还是编译时异常
    }
}
